import time
import os
from datetime import datetime, date
import mss
import pygetwindow as gw

# 设置要截图的窗口标题（部分匹配即可）
WINDOW_TITLE = "909 060 175"  # 改为你想截图的窗口标题，比如微信、QQ等
DATE = datetime.now().strftime("%Y-%m-%d")
SAVE_FOLDER = fr"H:\JieTu\{DATE}"  # 保存路径（可自定义）

# 创建保存目录（如果不存在）
os.makedirs(SAVE_FOLDER, exist_ok=True)

def capture_window(window_title, save_path):
    # 查找所有匹配的窗口（支持模糊匹配）
    windows = gw.getWindowsWithTitle(window_title)
    if not windows:
        print(f"[{datetime.now()}] 未找到标题包含 '{window_title}' 的窗口")
        return

    window = windows[0]  # 取第一个匹配的窗口
    if window.isMinimized:
        print(f"[{datetime.now()}] 窗口已最小化，跳过截图")
        return

    print(f"[{datetime.now()}] 正在截图窗口: {window.title}")

    # 获取窗口位置和尺寸
    left, top, width, height = window.left, window.top, window.width, window.height

    # 使用 mss 进行区域截图
    with mss.mss() as sct:
        monitor = {"top": top, "left": left, "width": width, "height": height}
        screenshot = sct.grab(monitor)

        # 保存为 png 文件
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = f"screenshot_{timestamp}.png"
        output_path = os.path.join(save_path, filename)
        mss.tools.to_png(screenshot.rgb, screenshot.size, output=output_path)
        print(f"截图已保存至: {output_path}")

if __name__ == "__main__":
    print("开始定时截图任务（每5分钟一次），按 Ctrl+C 停止...")
    try:
        while True:
            capture_window(WINDOW_TITLE, SAVE_FOLDER)
            time.sleep(300)  # 5分钟 = 300秒
    except KeyboardInterrupt:
        print("\n任务已停止。")